package scala.function

/**
 * 传递的函数有两个参数
 */
case object FunctionDeclareTest07 {

  def main(args: Array[String]): Unit = {
    def calculator(a1: Int, a2: Int, op: (Int, Int) => Int): Int = op(a1, a2)
    //标准版
    println(calculator(2, 3, (x: Int, y: Int) => {
      x + y
    }))
    //(2) 如果只有一行，则大括号也可以省略
    println(calculator(2, 3, (x: Int, y: Int) => x + y))

    //    (3)参数的类型可以省略，会根据形参进行自动的推导；
    println(calculator(2, 3, (x, y) => x + y))

    //    (4)如果参数只出现一次，则参数省略且后面参数可以用_代替
    println(calculator(2, 3, _ + _))


  }
}
